package test3

import (
	"errors"
	"fmt"
)

type MyError struct {
	// 接口
	error
}
// 初始化一个 MyError类型变量
var ErrBad = MyError{
	error: errors.New("bad things happened"),
}

func bad() bool {
	return false
}

func returnError() error {
	// p为 MyError类型的指针变量， 初始值为 nil?
	var p *MyError = nil
	if bad() {
		// 赋值为一个 MyError类型指针变量
		p = &ErrBad
	}
	// p 的初始值为 nil 将nil 赋值转换为一个 error类型的返回值
	return p
}

func Test2() {
	err := returnError()
	// err == nil?
	if err != nil {
		fmt.Printf("error occur: %+v\n", err)
		return
	}
	fmt.Println("OK")
}



